Skip to main content

Full text of "Systèmes Embarqués Chapitre 4( 1)"

See other formats


à_4iIiUI « L_i|JpiiU LkJI éjjjijJI 
ëcdib Supiriiura di Tichnologle «l d'Inlormafiq u* 



Module: Systèmes Embarqués 



Chapitre 4: 

Les Microcontrôleurs 




El Kefi HLEL 
Février 2014 



Présentation des Microcontrôleurs 



Architecture Interne 



Un microcontrôleur intègre sur un unique die (circuit intégré) : 

• Un processeur (CPU), avec une largeur du chemin de données allant de 4 bits 
pour les modèles les plus basiques à 32 ou 64 bits pour les modèles les plus 
évolués 

• De la mémoire vive (RAM) pour stocker les données et les variables ; 

• De la mémoire morte (ROM) pour stocker le programme (EPROM, EEPROM, 
mémoire flash, ...) 

• Une horloge pour le cadencement. Il peut être réalisé avec un quartz, un circuit 
RC ou une PLL 

• Des périphériques, capables d'effectuer des tâches spécifiques 




UNITE DE CALCUL 



PROGRAMME 



r 



DONNEES 



MicroControleur 



L 



H 

m bu 



BUS ADRESSES 



BUS DONNEES 



ENTREES /SORTIES 



TIMERS 

^ 

ADC / DAC 

PWM 
USART 



I 




Langage de Programmation 



o Rôle d'un programme 

• Lire des données en entrées 
(capteur) 

• Effectuer des calculs sur ces 
données 

• Fournir un résultat en sortie 
(actionneur) 

o Langage de haut niveau 

• Notion d'abstraction 

• Proche du langage humain 

• Exemples de langages: C, Java, 
C++, python, ... 

o Langage machine 

• Langage natif d'un processeur. Il 
est composé d'instructions et de 
données à traiter codées en binaire. 



DONNEES 



► 




► 


PROGRAMME 


CALCULS 
TRAITEMENTS 







RESULTATS 



Code source écrit 
en langage C 



Programme écrit 
sn langage machine 



COMPILATION 



□i ni nu no 

10 11 



e 



Langages de Haut Niveau 




Langage 



Interprété 
Perl, Python, 
Javascript 



Java 




Code machine 



Cycle de Génération de Programmes en Langage de Haut Niveau 



Source de haut niveau 



Source de haut niveau 



1 



Compilateur 



1 



Fichier asm 



Assembleur 



Fichier 
object 



Compilateur 




r 


Assembleur 







• Traduit le code de haut niveau en code assembleur 
(asm) et génère un fichier 

Source asm 

i 



Assembleur 



« linker » 



Utilise les fichiers objet générés 
pour générer un seul fichier obj 
exécutable 



Fichier objet 
exécutable 



« loader » 



T 



• Charge le fichier objet exécutable en mémoire pour 
exécution par la machine cible 



Machine cible 



• Traduit le code asm en code 
machine (obj) et génère un 
fichier 




Environnements de Programmation (l) 



o A l'origine, les microcontrôleurs se programmaient en assembleur (langage 
bas niveau). L'assembleur pose toujours des problèmes pour la maintenance 
et l'évolution des logiciels embarqués 

o On utilise de plus en plus des langages de haut niveau (ex le langage C) qui 
est capable de faciliter la programmation de microcontrôleurs toujours plus 
puissants 

o Les compilateurs C présentent généralement certaines restrictions liées aux 
spécificités des microcontrôleurs (par exemple mémoire limitée) 

o Avec l'augmentation de la puissance et de la quantité de mémoire de 

stockage (FLASH) disponible dans les microcontrôleurs, les programmes de 
ces derniers peuvent désormais être écrits en C++ 



e 



Environnements de Programmation (2) 



o Des simulateurs sont disponibles pour certains microcontrôleurs. Les 

développeurs peuvent ainsi analyser le comportement du microcontrôleur et 
du programme, comme s'il s'agissait du composant réel 

o Un simulateur montre l'état interne du processeur, ainsi que celui de ses 
sorties. On peut de cette façon créer des conditions similaire à des 
implémentations physiques. Cela facilite donc l'analyse et la résolution des 
problèmes 

o Certains logiciels de CAO simulent le comportement du microcontrôleur et 
des composants qui l'entourent. On peut ainsi afficher les états des entrées 
et sorties des différents composant au cours de l'exécution d'un programme 



e 



Familles de Microcontrôleurs 



o La famille Atmel AT91 

o La famille Hitachi H 8 

o La famille Intel 8051, 8085 

o Les familles Freescale 68HC08, 68HC12 

o La famille des PIC de Microchip 

o La famille des ST6, ST7, STM8, ST10, STR7, STR9, STM32 de 
STMicroelectronics 

o La famille MSP430 de Texas Instruments 

o Les familles V800 et KO de NEC 

o etc ... 



Exemple: Le circuit intégré d'Intel 8742, un microcontrôleur 8 bits qui 
comprend un processeur cadencé à 12 MHz, 128 octets de mémoire vive, une 
EPROM de 2048 bits, et des entrées-sorties sur une unique puce. 



STMlCROELECTRONICS 

Société franco/italienne. Parmi ces activités on peut citer le développement de 
microcontrôleurs 8, 16 et 32 bits pour des applications industrielles 




La Famille STM32 



Core/features 



Cortex -M4 



Cortex-M3 



Cortea-MQ 



High- performance MCUs witfi DSP and FPU 
180 MHz Cortex -M4 
1 28-KbytB to 2-Mbyta Hasti 
Up to 256-Kbyte SRAM 

Mixed-sïgnal MCUs with DSP and FPU 
72 MHz Cortex- M4 
64- to 256-Kbyte Flash 

Up to 4B-Kbyte SRAM 



. High-pertormance MCUs 

& \ 120 MHz Cortex- M3 

RMf 1 28-Kbyte to 1 -M byte Fias h 

>iyjpr Up to 128- Kbyte SRAM 

Mainstream MCUs 
24 to 72 MHZ Cortex-M3 
16-Kbyte tol-Mbyte Flash 
Upto 96 -Kbyte SRAM 

Ultra-low-power MCUs 
32 MHz Cortex-M3 
32- to 384-KDyte Rash 
Up to 48-Kbyte SRAM 

Wireless MCUs 
24 MHz Cortex-M3 
64- to 256-Kbyte Rasli 

UDto16-KbVteSRAM 




Entry-level MCUs 
48 MHz CorteX-MO 
16- to 1 28-Kbyte Flash 

Up to 1 2 - Kbyte S RAM Frequency/ pe rformance 

► 



Les Performances des Microcontrôleurs STM32 



STM32 PERFORMANCE 



MHz 




dmips 



£ STM32F4- 
Q STM32F3 

STM32F2 
Q STM32F1 

STM32F0 
^ STM32L1 
Q STM32W 



© 



Présentation de STM32 F4 




Caractéristiques de STM32 F4 



o Microcontrôleur ST basé sur le processeur ARM Cortex-M4 

o Processeur RISC 

o Architecture Harvard : bus instructions et bus données sont séparés 

o Mode de gestion de la consommation 

o Supporte uniquement le jeu d'instruction Thumb2 

Key features 



Real-time 
performance 

Cortex 




Cortex -M 4 wfth F^ 
16B MHz/210 DMIPS 



Outstanding 
power 
efficiency 

o 

<1uAV M7 RTC. 
Ultra lOw dynamic 
consumption, 

1.7to3.6VV im 



Superîor and 
innova tive 
péri phe rais 

G 

Faste r perip fierais, 
2 full duplex l z S, 
RTC wrlri 
su b second accuracy... 



Maximum 
intégration 




1 Mfiyte Flash, 
192-KbyteSRAM.,, 



Extensive 
tools and 
software 

CMSIS DSPlibrary, 
Matlab support, 
varions IDE starter kits, 
RTOS,and stachs 



e 



Bloc Diagramme de STM32 F4 



o Cœur : processeur 32 bits ARM 
Cortex™-M4 avec unité à virgule 
flottante (FPU) 
Mémoires 
• Jusqu'à 1 Mo de mémoire Flash 

Jusqu'à 192+4 Ko de mémoire 
SRAM 

o Interface parallèle LCD 

o Gestion de l'horloge, de la 

réinitialisation et de l'alimentation 

o Modes: attente, arrêt et veille 

o 3 convertisseurs AN 12 bits 

o 2 convertisseurs NA 12 bits 

o Jusqu'à 17 temporisateurs 

o Jusqu'à 140 ports d'E/S 

o Jusqu'à 15 interfaces de 
communication 

o Interface de caméra parallèle 8 à 14 
bits jusqu'à 54 Mo/s 



System 



Power supply 
1 2 V reguiaior 
PÛFWPDIWD 



Xtal osclllators 
32 kHz + 4 -26 MHz 



Internai RC osciïïators 
32 kHz + 1GMHï 



PLL 



Clock contrçri 



RTCVAWU 



.SysTIcktirner 



2k watcfidogs 
(lndependent and window) 



51/02/114/140 I/O fi 



Cyclicreduntiancy 
cfack (CRC) 



Contrai 



2x 1 S-brt motor control 
Syflcîirorïteed AC tirtter 



1Dx 16-bit timers 
2x32- hit timers 




mernorv 



ARM Cortex -M 4 
168 MHz 



Flaating point unit (FPU) 

Wested vector inter- 
rupt 

cDittroiler <NVIC) 



JÎAG/SW debug/ETM 



Multi-AHB bus matrix 



16-channd DMA 




True random number 
generator (RNG) 



Notes: 

1. 
2 



HS requires an ectet nal PHY tonnected to nie LPLPI interface 
Cryptaftrash pnxessarcn S7M32F41 7 and 5TM32F415 



Upto192-KbyteSRAM 

FSMC/ 
SRAIWNOR/NAND/CF/ 
LCD parallBl Interface 

BO-byte + 4-Kbyte 
backup SRAM 

5l2ÛTPt>ytes 
Connectivily 



Caméra interface 



Ethernet MAC10i1t>0 
wirJi IEEE 1568 



2x CAN 2,0fi 



IxUSB 2.0 OTG FS/HS' 



IkUSB zootg fs 



6x USART 
lln, smartcard, IrDA, 
modem control 



Analog 



2-channei 2x 1 2-btt DAC 



3x12-bitADC 
24channels/MMSPS 



Température sensor 



STM32 F4 : LES REGISTRES 



RO 

~rT 
~rT 
~rT 



R4 



R5 



R6 



R7 



R8 



R9 



RIO 



R11 



R12 




R13 (MSP) 


R13 (PSP) 



R14 



R15 



General- 


Purpose 


Register 


General- 


Purpose 


Register 


General- 


Purpose 


Register 


General- 


Puipose 


Register 


General- 


Purpose 


Register 


General- 


Puipose 


Register 


General- 


Purpose 


Register 


General- 


Puipose 


Register 


General- 


Puipose 


Register 


General- 


■Puipose 


Register 


General- 


Puipose 


Register 


General- 


Puipose 


Register 


General- 


Puipose 


Register 



> Low Registers 



> High Registers 



Main Stack Pointer (MSP) ? Proœss Stack Pointer (PSP) 
Link Register (LR) 
Program Counter (PC) 



xPSR 



PRIMASK 



FAULTMÀSK 



BASEPRI 



CONTROL 



Program Status Registers 



Interrupt Mask 
Registers 



Control Register 



v Spécial 
^ Registers 



C0RTEX-M4: MAPPING DE LA MÉMOIRE 



Vendor-specific g11MB 
memory 



Private peripheral 
bus 



1.0MB 



OxFFFFFFFF 



OxEOlOOOOO 
OxEOOFFFFF 

OxEOOOOOOO 
OxDFFFFFFF 



Extemal device 1.0GB 



OxAOOOOOOO 
0X9FFFFFFF 



0x43FFFFFF 

0x42000000 

0x400FFFFF 
0x40000000 

0x23 FFFFFF 

0x22000000 

0x200FFFFF 
0x20000000 



32MB Bitband alias 



1MB Bit band région 



32MB Bitband alias 




1MB Bit band région 



Extern al RAM 1.0GB 



Peripheral 0.5GB 



SRAM 0.5GB 



Code 0.5GB 



0x60000000 
0X5FFFFFFF 



0x40000000 
OxBFFFFFFF 



0x20000000 
OxlFFFFFFF 



0x00000000 



Carte de Développement: STM32F4Discovery 




Description de la Carte (STM32F4Discovery) 



o Petite carte (7 cm x 10 cm) basée sur un 
cortex M4 modèle STM32F407VGT6, 1 MB 
de flash et 192 KB de RAM 

o Elle est équipée en série d'un ST-Link (V2) 
permettant la programmation directe 
depuis un port USB, ce ST-Link pouvant 
également programmé tout autre 
microcontrôleur de la même famille 

o Un détecteur de mouvement MEMS, 

o Un micro numérique MEMS, 

o Un convertisseur N/A audio avec 

amplificateur de haut-parleurs de classe D 

o 4 voyants à LED 

o 2 boutons-poussoirs (un bouton pour 
interagir avec le programme et un bouton 
« Reset ») 

o Un connecteur micro USB type AB 

o Peut être alimentée en 3, 5 volts ou par le 
port USB 




Environnement de Développement 



o La carte de développement STM32F4DISCOVERY est une carte d'initiation 
à la programmation du STM32F4. Cette série de microcontrôleur contient 
un processeur Cortex-M4 qui peut exécuter des applications de traitement 
de signal numérique (filtrage, extraction de signaux ...) assez rapidement 

o Pour pouvoir programmer sur la carte STM32F4, il nous faut un 

environnement de développement. L'outil de développement qui sera utilisé 
est « Keil \i Vision » 

• Environnement de développement intégré: un compilateur C/C++, 
débogueur. Combine la gestion de projet, l'édition, le débogage du code 
source du programme, et de la simulation complète dans un 
environnement puissant 

• Facile à utiliser: l'utilisateur peut commencer ses projets de 
développement en spécifiant le microcontrôleur qu'il veut utiliser 

• Le débogueur aussi peut être utilisé pour simuler les périphériques. De 
cette manière, l'utilisateur peut vérifier une application avant de 
télécharger le code sur son équipement système. _ 



Exemple d'Application: 



Audio Playback & Record 



EUE 



USB type A ta Mirti-Scabie 



\ 



ciphone- wfth 
rraaFe jack roruiector 



V 




USB Micro A-Mal eîo 
A-FerrtaFe- Cable 



File Edit View Project Flash Debug Peripherals Extension A Extension B lools 5VC5 Window Help 

▼ a x jSSBfflffl 



□ ■■ Current 





R2 


0x00000000 


R3 


•QxDSDQ047b 


R4 


0x0800063c 


R5 


0x0800063c 


R6 


Oxoooooooo: 


R7 


0x00000000 


R8 


0x00000000 


R9 


0x00000000 


RIO 


0x00000000 


R11 


0x00000000 


R12 


0x00000000 


R13(SP) 


0x20000438 



57: { y, 
58: /* Enable PUR and GPIOx Clocks */ 
c£>0x08000488 B570 PUSH {r4-u6,lr} 

59: RCC_APELPei:iphClo-ckCiïicl(RCC_APBlPeriph_P¥R, ENABLE) ; 
|0>:i:i8i:i0048Â 2 101 MOVS rl,#Ox01 

0x0800048C 0708 LSL5 rO,rl,#28 

0X0800048E F7FFFEE 1 EL.¥ RCC_APB lPer iphC lockCmd [OxOSOOO 

60: RCC_APBlPêxiphClockCnid(RCC_ÀPB2Periph_GPIOC, ENABLE 
nvnBnnnjiQ? uni urure r.i Wn^m 

SI 



y \£\ maîn.c j 



m 



jjS Project""] ëS Registers [ 



051 
052 
053 
054 
055 
056 



* Description 

* Input 

* Output 

* Retum 

int main (voici? 



Main pxog&ai 

None 

None 

None 



/* Enable PWR and GPIOx Clocks */ 
RCC_APElPei:iphClockCiïid(RCC_APBlPeriph_P¥R, 



Address: ] 0x20000000 




0x20000000 


00000000 


OOOOOOOO 


OOOOOOOO 


OOOOOOOO 


OOOOOOOO 


016E3 600 


OOOOOOOO 


OOOOOOOO 




0x20000020 


04030201 


09080706 


40010800 


40011000 


40011000 


OOOOOOOO 


OOOOOOOO 


OOOOOOOO 




OX20000040 


OOOOOOOO 


OOOOOOOO 


OOOOOOOO 


OOOOOOOO 


OOOOOOOO 


OOOOOOOO 


OOOOOOOO 


OOOOOOOO 




0x20000060 


00000000 


OOOOOOOO 


OOOOOOOO 


OOOOOOOO 


OOOOOOOO 


OOOOOOOO 


OOOOOOOO 


OOOOOOOO 




0x20000080 


OOOOOOOO 


OOOOOOOO 


OOOOOOOO 


OOOOOOOO 


OOOOOOOO 


OOOOOOOO 


OOOOOOOO 


OOOOOOOO 




0X200000A0 


OOOOOOOO 


OOOOOOOO 


OOOOOOOO 


OOOOOOOO 


OOOOOOOO 


OOOOOOOO 


OOOOOOOO 


OOOOOOOO 




Ox200000CO 


OOOOOOOO 


OOOOOOOO 


OOOOOOOO 


OOOOOOOO 


OOOOOOOO 


OOOOOOOO 


OOOOOOOO 


OOOOOOOO 




|ox2000QOEO 


OOOOOOOO 


OOOOOOOO 


OOOOOOOO 


OOOOOOOO 


OOOOOOOO 


OOOOOOOO 


OOOOOOOO 


OOOOOOOO 


a 


| Call Stack | Locals | Jp W 


atch l [ -M Memory 1 | JQSymbols | 












ST-Link Debugger